editor.once('load', () => {
    // Matching darker and lighter colors suitable as the
    // stroke and fill values of graph nodes
    const DARKER_COLORS = [
        '#4bfc57', // selected node marker
        '#fc4b98',
        '#4bcbfc',
        '#fcf94b',
        '#c64bfc',
        '#4bfc92',
        '#fc5f4b',
        '#4b6bfc',
        '#9ffc4b',
        '#fc4bd3',
        '#4bfcf2',
        '#fcbe4b',
        '#8b4bfc',
        '#4bfc57',
        '#fc4b73',
        '#4ba7fc',
        '#dafc4b',
        '#ea4bfc',
        '#4bfcb7',
        '#fc834b',
        '#4f4bfc',
        '#7bfc4b',
        '#fc4bae',
        '#4be2fc',
        '#fce34b',
        '#af4bfc',
        '#4bfc7c',
        '#fc4b4f',
        '#4b82fc',
        '#b6fc4b',
        '#fc4be9',
        '#4bfcdb',
        '#fca84b',
        '#744bfc',
        '#56fc4b',
        '#fc4b8a',
        '#4bbdfc',
        '#f1fc4b',
        '#d44bfc',
        '#4bfca0',
        '#fc6c4b',
        '#4b5efc',
        '#91fc4b',
        '#fc4bc5',
        '#4bf8fc',
        '#fccc4b',
        '#994bfc',
        '#4bfc65',
        '#fc4b65',
        '#4b99fc',
        '#ccfc4b',
        '#f84bfc',
        '#4bfcc5',
        '#fc914b',
        '#5d4bfc',
        '#6dfc4b',
        '#fc4ba0',
        '#4bd4fc',
        '#fcf14b',
        '#bd4bfc',
        '#4bfc89',
        '#fc564b',
        '#4b74fc',
        '#a8fc4b',
        '#fc4bdb',
        '#4bfce9',
        '#fcb64b',
        '#824bfc',
        '#4bfc4e',
        '#fc4b7c',
        '#4baffc',
        '#e3fc4b',
        '#e24bfc',
        '#4bfcae',
        '#fc7a4b',
        '#4b50fc',
        '#83fc4b',
        '#fc4bb7',
        '#4beafc',
        '#fcda4b',
        '#a64bfc',
        '#4bfc73',
        '#fc4b57',
        '#4b8bfc',
        '#befc4b',
        '#fc4bf2',
        '#4bfcd3',
        '#fc9f4b',
        '#6b4bfc',
        '#5ffc4b',
        '#fc4b92',
        '#4bc6fc',
        '#f9fc4b',
        '#cb4bfc',
        '#4bfc97',
        '#fc644b',
        '#4b66fc',
        '#9afc4b',
        '#fc4bcd',
        '#4bfcf7',
        '#fcc34b',
        '#904bfc',
        '#4bfc5c',
        '#fc4b6e',
        '#4ba1fc',
        '#d5fc4b',
        '#f04bfc',
        '#4bfcbc',
        '#fc884b',
        '#554bfc',
        '#75fc4b',
        '#fc4ba9',
        '#4bdcfc',
        '#fce84b',
        '#b44bfc',
        '#4bfc81',
        '#fc4d4b',
        '#4b7dfc',
        '#b0fc4b',
        '#fc4be4',
        '#4bfce0',
        '#fcad4b',
        '#794bfc',
        '#51fc4b',
        '#fc4b84',
        '#4bb8fc',
        '#ebfc4b',
        '#d94bfc',
        '#4bfca5',
        '#fc724b',
        '#4b58fc',
        '#8cfc4b',
        '#fc4bbf',
        '#4bf3fc',
        '#fcd14b',
        '#9e4bfc',
        '#4bfc6a',
        '#fc4b60',
        '#4b93fc',
        '#c7fc4b',
        '#fc4bfa',
        '#4bfcca',
        '#fc964b',
        '#634bfc',
        '#67fc4b',
        '#fc4b9b',
        '#4bcefc',
        '#fcf64b',
        '#c24bfc',
        '#4bfc8f',
        '#fc5b4b',
        '#4b6ffc',
        '#a2fc4b',
        '#fc4bd6',
        '#4bfcee',
        '#fcbb4b',
        '#874bfc',
        '#4bfc54',
        '#fc4b76',
        '#4baafc',
        '#ddfc4b',
        '#e74bfc',
        '#4bfcb3',
        '#fc804b',
        '#4c4bfc',
        '#7efc4b',
        '#fc4bb1',
        '#4be5fc',
        '#fcdf4b',
        '#ac4bfc',
        '#4bfc78',
        '#fc4b52',
        '#4b85fc',
        '#b9fc4b',
        '#fc4bec',
        '#4bfcd8',
        '#fca44b',
        '#714bfc',
        '#59fc4b',
        '#fc4b8d',
        '#4bc0fc',
        '#f4fc4b',
        '#d04bfc',
        '#4bfc9d',
        '#fc694b',
        '#4b61fc',
        '#94fc4b',
        '#fc4bc8',
        '#4bfcfc',
        '#fcc94b',
        '#954bfc',
        '#4bfc62',
        '#fc4b68',
        '#4b9cfc',
        '#cffc4b',
        '#f54bfc',
        '#4bfcc1',
        '#fc8e4b',
        '#5a4bfc',
        '#70fc4b',
        '#fc4ba3',
        '#4bd7fc',
        '#fced4b',
        '#ba4bfc',
        '#4bfc86',
        '#fc534b',
        '#4b77fc',
        '#abfc4b',
        '#fc4bdf',
        '#4bfce6',
        '#fcb24b',
        '#7f4bfc',
        '#4bfc4b',
        '#fc4b7f',
        '#4bb2fc',
        '#e6fc4b',
        '#de4bfc',
        '#4bfcab',
        '#fc774b',
        '#4b53fc',
        '#86fc4b',
        '#fc4bba',
        '#4beefc',
        '#fcd74b',
        '#a34bfc',
        '#4bfc70',
        '#fc4b5a',
        '#4b8efc',
        '#c2fc4b',
        '#fc4bf5',
        '#4bfccf',
        '#fc9c4b',
        '#684bfc',
        '#62fc4b',
        '#fc4b96',
        '#4bc9fc',
        '#fcfb4b',
        '#c84bfc',
        '#4bfc94',
        '#fc614b',
        '#4b69fc',
        '#9dfc4b',
        '#fc4bd1',
        '#4bfcf4',
        '#fcc04b',
        '#8d4bfc',
        '#4bfc59',
        '#fc4b71',
        '#4ba5fc',
        '#d8fc4b',
        '#ec4bfc',
        '#4bfcb9',
        '#fc854b',
        '#524bfc',
        '#79fc4b',
        '#fc4bac',
        '#4be0fc',
        '#fce54b',
        '#b14bfc',
        '#4bfc7e',
        '#fc4b4c',
        '#4b80fc',
        '#b4fc4b',
        '#fc4be7',
        '#4bfcdd',
        '#fcaa4b',
        '#764bfc',
        '#54fc4b',
        '#fc4b88',
        '#4bbbfc',
        '#effc4b',
        '#d64bfc',
        '#4bfca2',
        '#fc6f4b',
        '#4b5cfc',
        '#8ffc4b',
        '#fc4bc3',
        '#4bf6fc',
        '#fcce4b',
        '#9b4bfc',
        '#4bfc67',
        '#fc4b63',
        '#4b97fc',
        '#cafc4b',
        '#fa4bfc',
        '#4bfcc7',
        '#fc934b',
        '#5f4bfc',
        '#6bfc4b',
        '#fc4b9e',
        '#4bd2fc',
        '#fcf34b',
        '#bf4bfc',
        '#4bfc8c',
        '#fc584b',
        '#4b72fc',
        '#a6fc4b',
        '#fc4bd9',
        '#4bfceb',
        '#fcb84b',
        '#844bfc'
    ];

    const LIGHTER_COLORS = [
        '#4bfc57', // selected node marker
        '#fcdeeb',
        '#def4fc',
        '#fcfbde',
        '#f3defc',
        '#defcea',
        '#fce1de',
        '#dee3fc',
        '#ecfcde',
        '#fcdef5',
        '#defcfa',
        '#fcf1de',
        '#e9defc',
        '#defce0',
        '#fcdee4',
        '#deedfc',
        '#f6fcde',
        '#f9defc',
        '#defcf0',
        '#fce7de',
        '#dedefc',
        '#e6fcde',
        '#fcdeef',
        '#def7fc',
        '#fcf8de',
        '#efdefc',
        '#defce6',
        '#fcdede',
        '#dee7fc',
        '#f0fcde',
        '#fcdef9',
        '#defcf6',
        '#fcedde',
        '#e5defc',
        '#e0fcde',
        '#fcdee8',
        '#def1fc',
        '#fafcde',
        '#f5defc',
        '#defcec',
        '#fce3de',
        '#dee1fc',
        '#eafcde',
        '#fcdef2',
        '#defbfc',
        '#fcf4de',
        '#ebdefc',
        '#defce2',
        '#fcdee2',
        '#deebfc',
        '#f4fcde',
        '#fbdefc',
        '#defcf2',
        '#fceade',
        '#e1defc',
        '#e3fcde',
        '#fcdeec',
        '#def5fc',
        '#fcfade',
        '#f1defc',
        '#defce8',
        '#fcdfde',
        '#dee5fc',
        '#eefcde',
        '#fcdef6',
        '#defcf9',
        '#fcf0de',
        '#e7defc',
        '#defcde',
        '#fcdee6',
        '#deeffc',
        '#f8fcde',
        '#f7defc',
        '#defcef',
        '#fce6de',
        '#dedefc',
        '#e7fcde',
        '#fcdef0',
        '#def9fc',
        '#fcf6de',
        '#eddefc',
        '#defce4',
        '#fcdee0',
        '#dee9fc',
        '#f1fcde',
        '#fcdefa',
        '#defcf5',
        '#fcecde',
        '#e3defc',
        '#e1fcde',
        '#fcdeea',
        '#def3fc',
        '#fcfcde',
        '#f4defc',
        '#defceb',
        '#fce2de',
        '#dee2fc',
        '#ebfcde',
        '#fcdef4',
        '#defcfb',
        '#fcf2de',
        '#e9defc',
        '#defce1',
        '#fcdee4',
        '#deecfc',
        '#f5fcde',
        '#fadefc',
        '#defcf1',
        '#fce8de',
        '#dfdefc',
        '#e5fcde',
        '#fcdeee',
        '#def7fc',
        '#fcf9de',
        '#f0defc',
        '#defce7',
        '#fcdede',
        '#dee6fc',
        '#effcde',
        '#fcdef8',
        '#defcf7',
        '#fceede',
        '#e6defc',
        '#dffcde',
        '#fcdee7',
        '#def0fc',
        '#f9fcde',
        '#f6defc',
        '#defced',
        '#fce4de',
        '#dee0fc',
        '#e9fcde',
        '#fcdef2',
        '#defafc',
        '#fcf5de',
        '#ecdefc',
        '#defce3',
        '#fcdee1',
        '#deeafc',
        '#f3fcde',
        '#fcdefc',
        '#defcf3',
        '#fcebde',
        '#e2defc',
        '#e2fcde',
        '#fcdeeb',
        '#def4fc',
        '#fcfbde',
        '#f2defc',
        '#defce9',
        '#fce0de',
        '#dee4fc',
        '#edfcde',
        '#fcdef5',
        '#defcfa',
        '#fcf1de',
        '#e8defc',
        '#defcdf',
        '#fcdee5',
        '#deeefc',
        '#f7fcde',
        '#f8defc',
        '#defcf0',
        '#fce7de',
        '#dedefc',
        '#e6fcde',
        '#fcdeef',
        '#def8fc',
        '#fcf7de',
        '#eedefc',
        '#defce5',
        '#fcdedf',
        '#dee8fc',
        '#f0fcde',
        '#fcdef9',
        '#defcf6',
        '#fcedde',
        '#e4defc',
        '#e0fcde',
        '#fcdee9',
        '#def2fc',
        '#fbfcde',
        '#f4defc',
        '#defcec',
        '#fce3de',
        '#dee1fc',
        '#eafcde',
        '#fcdef3',
        '#defcfc',
        '#fcf3de',
        '#eadefc',
        '#defce2',
        '#fcdee3',
        '#deebfc',
        '#f4fcde',
        '#fbdefc',
        '#defcf2',
        '#fce9de',
        '#e0defc',
        '#e4fcde',
        '#fcdeed',
        '#def6fc',
        '#fcf9de',
        '#f1defc',
        '#defce8',
        '#fcdfde',
        '#dee5fc',
        '#eefcde',
        '#fcdef7',
        '#defcf8',
        '#fcefde',
        '#e6defc',
        '#defcde',
        '#fcdee7',
        '#deeffc',
        '#f8fcde',
        '#f7defc',
        '#defcee',
        '#fce5de',
        '#dedffc',
        '#e8fcde',
        '#fcdef1',
        '#def9fc',
        '#fcf6de',
        '#eddefc',
        '#defce4',
        '#fcdee0',
        '#dee9fc',
        '#f2fcde',
        '#fcdefb',
        '#defcf4',
        '#fcebde',
        '#e3defc',
        '#e2fcde',
        '#fcdeea',
        '#def3fc',
        '#fcfcde',
        '#f3defc',
        '#defcea',
        '#fce1de',
        '#dee3fc',
        '#ecfcde',
        '#fcdef5',
        '#defcfb',
        '#fcf2de',
        '#e9defc',
        '#defce0',
        '#fcdee4',
        '#deedfc',
        '#f6fcde',
        '#f9defc',
        '#defcf0',
        '#fce8de',
        '#dfdefc',
        '#e5fcde',
        '#fcdeee',
        '#def7fc',
        '#fcf8de',
        '#efdefc',
        '#defce6',
        '#fcdede',
        '#dee7fc',
        '#f0fcde',
        '#fcdef8',
        '#defcf7',
        '#fceede',
        '#e5defc',
        '#dffcde',
        '#fcdee8',
        '#def1fc',
        '#fafcde',
        '#f5defc',
        '#defced',
        '#fce4de',
        '#dee0fc',
        '#e9fcde',
        '#fcdef2',
        '#defbfc',
        '#fcf4de',
        '#ebdefc',
        '#defce2',
        '#fcdee2',
        '#deebfc',
        '#f3fcde',
        '#fcdefc',
        '#defcf3',
        '#fceade',
        '#e1defc',
        '#e3fcde',
        '#fcdeec',
        '#def5fc',
        '#fcfade',
        '#f2defc',
        '#defce9',
        '#fce0de',
        '#dee4fc',
        '#edfcde',
        '#fcdef6',
        '#defcf9',
        '#fcf0de',
        '#e7defc'
    ];

    const VC_GRAPH_STYLES = DARKER_COLORS.map((s, i) => {
        return {
            stroke: s,
            fill: LIGHTER_COLORS[i]
        };
    });

    editor.method('vcgraph:getAllStyles', () => {
        return VC_GRAPH_STYLES;
    });

    editor.method('vcgraph:numStyles', () => {
        return VC_GRAPH_STYLES.length;
    });
});
